/***************************************************************************
 *   Copyright (C) 2008 by BogDan Vatra                                    *
 *   bogdan@licentia.eu                                                    *
 *                                                                         *
 *   This program is free software: you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation, either version 3 of the License, or     *
 *   (at your option) any later version.                                   *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
 ***************************************************************************/
#include "tcp_server.h"
#include <QCoreApplication>
//#include <QDebug>
#include "thread_sql.h"

extern uint connu;
TCPServer::TCPServer ( QObject *parent )
                : QTcpServer ( parent )
{
	m_threads=25;
	setMaxPendingConnections(m_threads);
}


TCPServer::~TCPServer()
{
}


void TCPServer::decConnection()
{
	m_threads++;
}

void TCPServer::incomingConnection ( int socketDescriptor )
{
    qDebug()<<"great , a new conection";

    while(!m_threads)
    {
            QCoreApplication::instance()->processEvents();
            usleep(50);
    }
//    connu++;
//    if(connu>2000000)
//    {
//            connu=1;
//    }
    m_threads--;
//	qDebug()<<"thread "<<25-m_threads;
    ThreadSql * ts=new ThreadSql ( socketDescriptor,this );
    connect ( ts,SIGNAL ( finished() ),ts,SLOT ( deleteLater() ) );
    connect ( ts,SIGNAL ( finished() ), SLOT(decConnection()));
    ts->start();
    usleep(50);
    if(ts->isRunning ())
            ts->setPriority(QThread::LowestPriority);

}
